VPC エンドポイント削除時に “vpce-xxxxxx – Operation is not allowed for requester-managed VPC endpoints for the service com.amazonaws.vpce.region.vpce-svc-xxxxxx” が表示される際の対処方法
困っている内容
東京リージョンにある VPC エンドポイント vpce-xxxxxx を削除しようとした所、以下のエラーメッセージが表示され削除できませんでした。
vpce-xxxxxx - Operation is not allowed for requester-managed VPC endpoints for the service com.amazonaws.vpce.ap-northeast-1.vpce-svc-xxxxxx
このエラーの発生原因と解消方法について教えてください。
どう対応すればいいの?
当該エラーは、AWS マネージドサービスによって作成されるリクエスタマネージド型 VPC エンドポイントという VPC エンドポイントを、リクエスタマネージド型 VPC エンドポイントを作成した AWS マネージドサービスのリソースが存在する状態で削除しようとした場合に発生します。
当該エラーは、対象のリクエスタマネージド型 VPC エンドポイントを作成した AWS マネージドサービスを特定し、リソースを削除することで解消できます。
リクエスタマネージド型 VPC エンドポイントを作成した AWS マネージドサービスの特定方法、およびリソースの削除方法については下記 re:Post 記事をご参照ください。
AWS マネージドサービスの特定をやってみた
AWS マネージドサービスのリソースの削除方法に関しては、特に迷われる部分はないかと思います。
一方で、リクエスタマネージド型 VPC エンドポイントを作成した AWS マネージドサービスの特定方法は、実際に試して確認した方がわかりやすいと思いました。
そこで、前述の re:Post 記事の方法に従い、東京リージョンでリクエスタマネージド型 VPC エンドポイントを作成した以下 AWS マネージドサービスの特定をやってみました。
- Network Firewall
- Aurora Serverless(v1)
- RDS Proxy
- Redshift
VPC エンドポイントが 90 日以内に作成されたものである場合
CloudTrail の [イベント履歴] の CreateVpcEndpoint API コールから、AWS マネージドサービスの特定が可能です。
[イベント履歴] では過去 90 日間のイベントのみを表示します。AWS アカウント 内の進行中イベントを記録するには、イベントデータストアまたは証跡を作成します。
共通の作業
1.AWS マネジメントコンソールの検索欄で「VPC」と入力し、サービスより VPC を選択します。
2.VPC コンソールの左ペイン、またはリージョン別のリソースより、「エンドポイント」(Endpoints) を選択します。
3.対象の VPC エンドポイントを選択し、[詳細] タブから VPC エンドポイント ID(vpce-xxxxxx) をコピーします。
4.AWS マネジメントコンソールの検索欄で「CloudTrail」と入力し、サービスより CloudTrail を選択します。
5.CloudTrail コンソールの左ペインより、「イベント履歴」 を選択します。
6.ルックアップ属性キーのドロップダウンリストから [リソース名] を選択後、検索欄に先程コピーした VPC エンドポイント ID(vpce-xxxxxx) をペーストし検索します。
7.検索結果から [イベント名] が CreateVpcEndpoint となっているイベントを探し、CreateVpcEndpoint のリンクを押下します。
Network Firewall の場合
イベントレコードの "Tag" 内に、以下キーバリューのタグが記載されています。
①"Key" が "Firewall"、"Value" が Network Firewall の ARN
②"Key" が "AWSNetworkFirewallManaged"、"Value" が true
"Tag": [ { "Value": "arn:aws:network-firewall:ap-northeast-1:xxxxxxxxxxxx:firewall/xxxxx", "tag": 1, "Key": "Firewall" }, { "Value": true, "tag": 2, "Key": "AWSNetworkFirewallManaged" } ]
Aurora Serverless の場合
ユーザー名が RDSAuroraServeless と記載されています。
RDS Proxy の場合
ユーザー名が RDSSlrAssumptionSession と記載されています。
VPC エンドポイントが作成されてから 90 日以上経過している場合
ご利用されている AWS マネージドサービスに合わせて各サービスの特定方法を試していくことで、リクエスタマネージド型 VPC エンドポイントを作成した AWS マネージドサービスの特定が可能です。
Network Firewall の特定方法
- VPC エンドポイントのタグ
VPC コンソールの「エンドポイント」(Endpoints) 画面より、対象の VPC エンドポイントを選択後、[タグ] タブから以下キーバリューのタグが記載されていることを確認します。
①キーが "AWSNetworkFirewallManaged"、値が true
②キーが "Firewall"、値が Network Firewall の ARN
- ファイアウォールの詳細
1.VPC コンソールの「ファイアウォール」(Firewalls) 画面より、ファイアウォール名のリンクを押下します。
2.[ファイアウォールの詳細] タブから [ファイアウォールエンドポイント] 欄を確認し、対象の VPC エンドポイント ID が記載されていることを確認します。
Aurora Serverless の特定方法
- エンドポイントの名前解決
1.RDS コンソールの「データベース」 画面より、Aurora Serverless の DB 識別子のリンクを押下します。
2.[接続とセキュリティ] タブより、Aurora Serverless のエンドポイントをコピーします。
3.コマンドラインインターフェイスにて、下記コマンドを実行する。
※(Aurora Serverless エンドポイント) には、先程コピーした Aurora Serverless のエンドポイントを入力する。
% dig (Aurora Serverless エンドポイント) +short
上記コマンドの実行結果は以下のようになります。(前述の re:Post 記事より抜粋)
vpce-0ce9fdcdd4aa4097e-1hbywnw6.vpce-svc-0b2f119acb23c050e.us-east-1.vpce.amazonaws.com.
172.31.4.218
172.31.21.82
4.VPC コンソールの「エンドポイント」(Endpoints) 画面で対象の VPC エンドポイントを選択後、[詳細] タブの [DNS 名] 欄にて、コマンドの実行結果より得られた CNAME 値と一致するものがないか確認します。
※コマンド実行結果で得られた CNAME 値には最後にドット(.) が付いているため、「command + F」等で検索する際には最後のドットを削除するように注意してください。
RDS Proxy の特定方法
- エンドポイントの名前解決
1.RDS コンソールの [プロキシ] 画面より、RDS Proxy のプロキシ識別子のリンクを押下します。
2.[プロキシエンドポイント] 欄から、RDS Proxy のエンドポイントをコピーします。
3.コマンドラインインターフェイスにて、下記コマンドを実行する。
※(RDS Proxy エンドポイント) には、先程コピーした RDS Proxy のエンドポイントを入力する。
% dig (RDS Proxy エンドポイント) +short
4.「Aurora Serverless の特定方法」と同様に、VPC コンソールの「エンドポイント」(Endpoints) 画面で対象の VPC エンドポイントを選択後、[詳細] タブの [DNS 名] 欄にて、コマンドの実行結果より得られた CNAME 値と一致するものがないか確認します。
Redshift の特定方法
1.Redshift コンソールの [設定] 画面より、Redshift のエンドポイント名のリンクを押下します。
2.[エンドポイント ID] に、対象の VPC エンドポイント ID が記載されていることを確認します。
補足
「Redshift の特定方法」で対象の VPC エンドポイント ID が確認できなかった場合でも、Redshift でリクエスタマネージド型 VPC エンドポイントが作成されている場合があります。
自分が確認した所では、以下のケースにおいて Redshift でリクエスタマネージド型 VPC エンドポイントが作成されることを確認しました。
- ノードの種類で「RA3」を選択し Redshift クラスター(プロビジョニング) を作成した
- Redshift Serverless を作成した
上記ケースの場合、Redshift クラスター(プロビジョニング) では Redshift クラスターのエンドポイント、Redshift Serverless ではワークグループのエンドポイントを名前解決することで特定が可能です。
エンドポイントの名前解決に関しては、「Aurora Serverless の特定方法」および「RDS Proxy の特定方法」と同様です。
参考資料
[1] リクエスタマネージド型 VPC エンドポイントを削除する | AWS re:Post
[2] CloudTrail イベント履歴の操作 - AWS CloudTrail